package org.dromara.xxmj.mapper;

import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.xxmj.domain.Course;
import org.dromara.xxmj.domain.dto.CourseQueryDto;
import org.dromara.xxmj.domain.vo.CourseDetailVo;
import org.dromara.xxmj.domain.vo.CourseListVO;
import org.dromara.xxmj.domain.vo.CourseMyOrderVO;
import org.dromara.xxmj.domain.vo.CourseVo;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 课程Mapper接口
 *
 * @author Vincent
 */
@Repository
public interface CourseMapper extends BaseMapperPlus<Course, CourseVo> {

    /**
     * 获取课程列表
     *
     * @param dto 查询条件
     * @param pageQuery 分页参数
     * @return 课程列表
     */
//    TableDataInfo<CourseListVO> selectCourseList(CourseQueryDto dto, String userId, PageQuery pageQuery);
    List<CourseListVO> selectCourseList(CourseQueryDto dto, String userId, PageQuery pageQuery);
    /**
     * 获取课程详情
     *
     * @param id 课程ID
     * @return 课程详情
     */
    CourseDetailVo selectCourseDetail(Long id);

    /**
     * 检查用户是否已购买课程
     *
     * @param userId 用户ID
     * @param courseId 课程ID
     * @return 是否已购买
     */
    Boolean checkUserPurchased(Long userId, Long courseId);

    /**
     * 获取用户已购课程列表
     *
     * @param userId 用户ID
     * @param query 查询条件
     * @param pageQuery 分页参数
     * @return 课程列表
     */
    List<CourseMyOrderVO> selectUserCourseList(Long userId, CourseQueryDto query, PageQuery pageQuery);


}
